Linux 内核
-
深入剖析TCP TIME_WAIT状态 为啥它赖着不走以及如何在高并发服务器上优雅送走它
嘿,各位奋战在一线的后端同学、网络大佬和SRE们!今天咱们来聊聊一个老生常谈但又极其重要的话题——TCP的 TIME_WAIT 状态。你可能在 netstat -an | grep TIME_WAIT | wc -l 时看到过成千上万的这...
-
Linux C++ 高性能服务器如何用 HugePages 优化共享内存
在低延迟、高吞吐的 C++ 高性能计算服务(如交易系统、低延迟缓存、实时推流服务)中,进程间通过共享内存(Shared Memory)传递数据是极其常见的方案。 但是,当共享内存的规模达到数 GB 甚至数十 GB 时,默认的 4KB ...
-
Linux 文件锁的终极纠缠:flock、fcntl、lockf 的本质区别与致命陷阱
在 Linux 多进程或多线程开发中,文件锁(File Locking)是一个绕不开的坎。很多人在遇到进程间同步、防止程序多开、或者写入同一日志文件时,会随便搜一段代码,调个 flock 或者 fcntl 就上线了。 结果往往...
-
Linux 进程崩溃后,它的 flock / fcntl 文件锁会自动释放吗?
结论先行:会,Linux 内核会强制帮你收尾。 无论是被 kill -9 强杀、段错误(Segmentation fault)崩溃,还是正常 exit 退出,该进程持有的 flock 和 fcntl 文件锁 都会被...
-
Linux 共享内存跨进程读写锁:如何系统性搞定进程崩溃后的死锁难题?
在多进程高并发场景下,共享内存(Shared Memory)因其“零拷贝”的特性,堪称进程间通信(IPC)的性能王牌。然而,高收益伴随着高风险。 最让人头疼的问题莫过于: 如果一个进程在持有共享内存的锁时,突然被 kill -9 、...
-
Linux 性能调优:如何精准查看特定进程的共享内存被 Swap 占用的比例?
在 Linux 运维和数据库调优(如 PostgreSQL、Oracle 或使用大量共享内存的 IPC 应用)中,我们经常会遇到系统响应突然变慢的情况。这时候,排查 Swap(交换分区) 占用是常规操作。 但很快你会发现一个令人头...
-
为什么高并发 Redis 实例启用透明大页(THP)后,写操作延迟会瞬间飙升?
在 Linux 环境下运行高并发 Redis 实例时,如果你阅读过 Redis 的启动日志,经常会看到这样一行显眼的警告: WARNING you have Transparent Huge Pages (THP) enabled ...
-
利用 io_uring 固化缓冲区与 C++23 内存池攻克大文件零拷贝吞吐极限
在大文件网络传输或高性能存储系统中,传统的 read / write 系统调用往往伴随着高昂的 CPU 拷贝开销与内核态/用户态切换成本。即便使用标准 io_uring 异步接口,如果在每次 I/O 提交时都动态建立用户空间页...
-
io_uring 缓冲池优化实践:如何用无锁 Buffer Ring 彻底解决网络库的内存抖动
在编写高性能网络服务器时,最让人头疼的往往不是 I/O 拷贝本身,而是 内存分配的确定性 。 在传统的 epoll 异步非阻塞模型中,我们通常面临两难境地: 预分配模式 :为每个连接(Connection)在初始化时就绑...
-
如何防止 io_uring 异步文件 IO 退化为同步阻塞
在高性能系统编程中, io_uring 被寄予厚望。大家都期待它能带来极致的无锁、非阻塞异步 IO 体验。然而,许多人在将传统的 File IO 迁移到 io_uring 后,压测时却发现 CPU 消耗极高,甚至出现了意料之外的延迟...
-
SPDK NVMe-oF 性能实测:RDMA 与 AF_XDP TCP 延迟与 CPU 损耗的深度量化剖析
在超大规模数据中心和高性能存储架构中,如何压榨网络协议栈的每一分性能是永恒的主题。SPDK(Storage Performance Development Kit)作为用户态存储领域的标杆,其 NVMe-oF(NVMe over Fabr...
-
彻底解决 SPDK 启用 AF_XDP 时的 memlock 报错:从原理到生产级配置
在 Linux 5.15+ 内核环境下,使用 SPDK(Storage Performance Development Kit)搭配 AF_XDP 驱动(特别是配合 bdev_aio 或自定义网络前端)时,很多开发者在初始化 UMEM...
-
用 eBPF TC 打造高吞吐低延迟的无特权 Kubernetes 容器网络架构设计与实现
在传统的 Kubernetes 网络架构中,容器间通信通常依赖于 veth pair、Linux Bridge 以及 iptables/IPVS 等技术。当数据包从一个 Pod 发往另一个 Pod 时,它需要跨越多次网络栈,经历繁琐的路由...
-
PVE 虚拟机 vs LXC 容器:Jellyfin 硬件解码直通深度评测与避坑指南
在 Proxmox VE(PVE)环境下部署 Jellyfin 媒体服务器时,如何让其高效地调用显卡(核显或独显)进行硬件转码,是每个 HomeLab 玩家必须要面对的课题。 最常见的两条路线是:**LXC(Linux 容器)**与 ...
-
13代Intel核显在PVE 8.1下完美的SR-IOV虚拟化配置指南
在玩转 Homelab 和 PVE(Proxmox VE)时,核显虚拟化一直是高频需求。自 Intel 11 代 CPU 开始,传统的 GVT-g 虚拟化方案(可以将核显切分为多个 vGPU 供不同虚拟机使用)已被彻底废弃。取而代之的是 ...
-
PVE 8.0下Intel 12代及以上核显SR-IOV虚拟化实操教程(保留宿主机HDMI输出)
在 Intel 11 代之前的消费级平台上,我们常用 GVT-g 技术来对核显进行分片虚拟化。但从 12 代(Alder Lake)及以后的架构(包括 N100、i3-12100、i7-13700 等)开始,Intel 彻底废弃了 GVT...
-
N100核显SR-IOV虚拟化:PVE 8.x下Jellyfin与Plex开启QSV硬解保姆级教程
在 PVE 8.x 下,Intel N100 凭借其极低的功耗和出色的 QSV 解码能力,成为了家用 NAS/All-in-One 路由器的明星 CPU。传统的核显直通(Passthrough)只能将核显分给单一虚拟机,而通过 SR-I...
-
畅网 N5105 物理群晖 NVMe 节能与 APST 不生效问题的深度解决方法
在用畅网 N5105 四网口软路由板子刷物理群晖(DSM)时,不少折腾 NAS 的朋友都会遇到一个令人头疼的问题: NVMe 固态硬盘温度居高不下(日常 50℃-70℃ 徘徊),或者好不容易配置了 APST(Active Power St...
-
高并发下 nf_conntrack: table full 报错?教你精准计算内核参数,拒绝内存崩溃
在高并发网络压力测试或遭遇 DDoS 攻击时,Linux 服务器的 dmesg 或者是 /var/log/messages 经常会爆出这样一条红字警告: nf_conntrack: table full, dropping ...
-
PVE 8.x(N100)安装核显后频繁死机挂起?一文看懂如何排查内核与 P-State 节能设置
搭载 Intel N100(Alder Lake-N 架构)的小主机凭借极低的功耗和不俗的性能,成为了当下 Homelab、轻量 NAS 以及软路由玩家的宠儿。 但在 PVE 8.x(基于 Debian 12,采用 6.x 内核)环境...